//
//  UIImage+extention.swift
//  Weibo
//
//  Created by 唐润欣 on 16/6/17.
//  Copyright © 2016年 唐润欣. All rights reserved.
//

import UIKit

extension UIImage {
    
    class func createAdotImage(color: UIColor) ->UIImage {
        
        //在swfit中，结构体是按 值 传递， 而对象是 按 址 传递，结构体和对象在很多方面都非常像
        //在swift中，大部分的原生的数据类型，都是结构体
        
        //调用结构体的函数
        let size = CGSizeMake(1, 1)
        
        //1. 创建图形上下文
        UIGraphicsBeginImageContextWithOptions(size, true, screenScale)
        
        //2. 设置颜色
        color.set()
        
        //3. 设置区域填充
        UIRectFill(CGRect(x: 0, y: 0, width: size.width, height: size.height))
        
        //4. 获取图片
        let image = UIGraphicsGetImageFromCurrentImageContext()
        
        //5.关闭上下文
        UIGraphicsEndImageContext()
        
        return image
    }
    
    ///  生生圆角图片
    ///
    ///  - parameter isCornered: 是否是圆角
    ///  - parameter size:       绘制的大小
    ///  - parameter color:      背景颜色
    ///
    ///  - returns: 返回绘制图像
    func async_createCircleImage(isCornered: Bool = false, size: CGSize, color: UIColor = UIColor.whiteColor(), completion: (UIImage) ->()) {
        
        dispatch_async(dispatch_get_global_queue(0, 0)) { () ->Void in
            
            let rect = CGRect(origin: CGPointZero, size: size)
            
            //开启上下文
            UIGraphicsBeginImageContextWithOptions(size, true, screenScale)
            
            //设置填充颜色
            color.setFill()
            
            //颜色填充
            UIRectFill(rect)
            
            if isCornered {
                
                //用贝赛尔曲线裁切
                //设置圆形的裁切路径
                let path = UIBezierPath(ovalInRect: rect)
                path.addClip()
            }
            
            //绘制
            self.drawInRect(rect)
            
            //生成图片
            let image = UIGraphicsGetImageFromCurrentImageContext()
            
            //关闭上下文
            UIGraphicsEndImageContext()
            
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                
                completion(image)
            })
        }
    }
    
    func createCircleImage(isCornered: Bool, size: CGSize, color: UIColor) ->UIImage {
        
        let rect = CGRect(origin: CGPointZero, size: size)
        
        //开启上下文
        UIGraphicsBeginImageContextWithOptions(size, true, screenScale)
        
        //设置填充颜色
        color.setFill()
        
        //颜色填充
        UIRectFill(rect)
        
        if isCornered {
            
            //用贝赛尔曲线裁切
            //设置圆形的裁切路径
            let path = UIBezierPath(ovalInRect: rect)
            path.addClip()
        }
        
        //绘制
        self.drawInRect(rect)
        
        //生成图片
        let image = UIGraphicsGetImageFromCurrentImageContext()
        
        //关闭上下文
        UIGraphicsEndImageContext()
        
        return image
    }
}
